import _ from 'lodash' import { useState, useEffect } from 'react' import { useRouter } from 'next/router' import { CHAINS } from '@synapsecns/synapse-constants' import { useLazyQuery, useQuery } from '@apollo/client' import { GET_BRIDGE_TRANSACTIONS_QUERY, DAILY_STATISTICS_BY_CHAIN, } from '@graphql/queries' import { ChainInfo } from '@components/misc/ChainInfo' import { OverviewChart } from '@components/ChainChart' import { HorizontalDivider } from '@components/misc/HorizontalDivider' import { StandardPageContainer } from '@components/layouts/StandardPageContainer' import { BridgeTransactionTable } from '@components/BridgeTransaction/BridgeTransactionTable' import { SynapseLogoSvg } from '@components/layouts/MainLayout/SynapseLogoSvg' import { HolisticStats } from '@components/misc/HolisticStats' import { TRANSACTIONS_PATH } from '@urls' const CHAIN_ID_NAMES_REVERSE = CHAINS.CHAIN_ID_NAMES_REVERSE interface variablesType { chainIDFrom?: any chainIDTo?: any useMv?: boolean } export const ChainSummary = () => { const router = useRouter() const { chainId: chainIdRouter } = router.query const [platform, setPlatform] = useState('ALL') const [transactionsArr, setTransactionsArr] = useState([]) const [dailyDataArr, setDailyDataArr] = useState([]) const [variables, setVariables] = useState({}) // eslint-disable-next-line @typescript-eslint/no-shadow const [chainId, setChainId] = useState(0) const [completed] = useState(false) const [dailyStatisticType, setDailyStatisticType] = useState('VOLUME') const [dailyStatisticDuration, SetDailyStatisticDuration] = useState('PAST_6_MONTHS') const [dailyStatisticCumulative, SetDailyStatisticCumulative] = useState(true) const unSelectStyle = 'transition ease-out border-l-0 border-gray-700 border-opacity-30 text-gray-500 bg-gray-700 bg-opacity-30 hover:bg-opacity-20 ' const selectStyle = 'text-white border-[#BE78FF] bg-synapse-radial' const { loading, stopPolling, startPolling } = useQuery( GET_BRIDGE_TRANSACTIONS_QUERY, { pollInterval: 5000, variables, fetchPolicy: 'network-only', onCompleted: (data) => { let bridgeTransactionsTable = data.bridgeTransactions bridgeTransactionsTable = _.orderBy( bridgeTransactionsTable, 'fromInfo.time', ['desc'] ).slice(0, 25) setTransactionsArr(bridgeTransactionsTable) }, } ) const [getDailyStatisticsByChain, { loading: loadingDailyData }] = useLazyQuery(DAILY_STATISTICS_BY_CHAIN, { onCompleted: (data) => { let chartData = data.dailyStatisticsByChain if (dailyStatisticCumulative) { chartData = JSON.parse(JSON.stringify(data.dailyStatisticsByChain)) for (let i = 1; i < chartData.length; i++) { for (const key in data.dailyStatisticsByChain[i]) { if (key !== 'date' && key !== '__typename') { chartData[i][key] += chartData[i - 1]?.[key] ? chartData[i - 1][key] : 0 } } } } setDailyDataArr(chartData) }, }) // update chart useEffect(() => { let type = dailyStatisticType if (platform === 'MESSAGE_BUS' && dailyStatisticType === 'VOLUME') { type = 'FEE' setDailyStatisticType('FEE') } getDailyStatisticsByChain({ variables: { type, duration: dailyStatisticDuration, platform, useCache: false, chainID: chainId, useMv: true, }, }) }, [ dailyStatisticDuration, dailyStatisticType, dailyStatisticCumulative, platform, ]) // Get initial data useEffect(() => { getDailyStatisticsByChain({ variables: { type: dailyStatisticType, duration: dailyStatisticDuration, useCache: false, chainID: chainIdRouter, useMv: true, }, }) setVariables({ chainIDFrom: chainIdRouter, useMv: true }) setChainId(chainIdRouter) }, [chainIdRouter]) useEffect(() => { if (!completed) { startPolling(10000) } else { stopPolling() } return () => { stopPolling() } }, [stopPolling, startPolling, completed]) return (


{platform === 'MESSAGE_BUS' ? null : ( )}




Recent Transactions

{loading ? (
) : ( )}
) } const ChainPage = () => { return } export default ChainPage